# 定义绘图用到的参数
# 网格参数配置文件
class FluidParams:
    """流体网格参数"""
    domain = {
        "xmin": -2.0,
        "ymin": -2.0,
        "xmax": 2.0,
        "ymax": 2.0
    }
    mesh = {
        "nx": 16,           # x方向单元数
        "ny": 16,           # y方向单元数
        "cell_type": "triangle",  # 单元类型
        "size_factor": 0.15  # 网格尺寸因子（Gmsh用）
    }
    visualization = {
        "color": "blue",    # 可视化颜色
        "rgb": [0, 0, 255],  # RGB值
        "opacity": 0.8,     # 透明度
        "representation": "Surface With Edges",  # 显示模式
        "name": "Fluid"     # 数据集名称
    }


class SolidParams:
    """固体网格参数"""
    domain = {
        "xmin": -1.0,
        "ymin": -1.0,
        "xmax": 1.0,
        "ymax": 1.0
    }
    mesh = {
        "nx": 8,           # x方向单元数
        "ny": 8,           # y方向单元数
        "cell_type": "triangle",  # 单元类型
        "size_factor": 0.10  # 网格尺寸因子（Gmsh用）
    }
    visualization = {
        "color": "green",   # 可视化颜色
        "rgb": [0, 255, 0],  # RGB值
        "opacity": 1.0,     # 透明度
        "representation": "Surface With Edges",  # 显示模式
        "name": "Solid"     # 数据集名称
    }


class GeneralParams:
    """通用参数"""
    output = {
        "fluid_file": "fluid.xdmf",  # 流体网格输出文件
        "solid_file": "solid.xdmf",  # 固体网格输出文件
        "format": "xdmf"             # 输出格式
    }
    gmsh = {
        "algorithm": 6,     # 网格生成算法（Delaunay）
        "save_msh": True,   # 是否保存中间msh文件
        "msh_file": "temp.msh"  # 临时msh文件名
    }
    fenicsx = {
        "mpi_comm": MPI.COMM_WORLD  # MPI通信器（需在主脚本中导入MPI）
    }


# 网格生成方法选择
mesh_generator = "fenicsx"  # 可选 "fenicsx" 或 "gmsh"
